1629C - Meximum Array - CodeForces Solution


Math Implementation Hash Table

Please click on ads to support us..

Python Code:

from collections import Counter

def mex():
    mex_val = 0
    while (mex_val <= n):
        if (mex_val not in s):
            return mex_val
        mex_val += 1
    return mex_val

for _ in range(int(input())):
    n = int(input())
    arr = [int(item) for item in input().split()]
    c = Counter(arr)
    s = set(arr)
    ans = []
    i=0
    while(i<n):
        m = mex()
        z = set()
        while (i < n):
            if (arr[i] < m):
                z.add(arr[i])
            c[arr[i]] -= 1
            if (c[arr[i]] == 0):
                s.remove(arr[i])
            if (len(z) == m):
                break
            i += 1
        ans.append(m)
        i += 1
    print(len(ans))
    print(*ans)

C++ Code:

#include <bits/stdc++.h>
using namespace std;
using vi = vector<int>;
using vvi = vector<vi>;
#define pb push_back
int main()
{
    int t;
    cin>>t;
 
    while (t--){
        int n;
        cin>>n;
 
        vi a(n + 1);
        vvi pos(n + 2);//if mex == n + 1 => pos[n + 1] is empty
 
        for (int i = 1;i<=n;i++){
            cin>>a[i];
            pos[a[i]].pb(i);//add index i to the set of positions[a[i]]
        }
 
        int l = 1;
        vi b;//final answer
 
        while (l <= n){
            int mex = 0;
            int r = l;//[l, l]
 
            for (;mex <= n + 1;mex++){
                auto it = lower_bound(pos[mex].begin(),pos[mex].end(),l);
                if (it == pos[mex].end())//no occurrence of mex in the range [i, n]
                    break;
                r = max(r, *it);
            }   
 
            b.pb(mex);
            l = r + 1;
 
        }

        cout<<(int)b.size()<<endl;
        for (auto it:b)cout<<it<<" ";
        cout<<endl;
    }
    return 0;
}


Comments

Submit
0 Comments
More Questions

630D - Hexagons
1690D - Black and White Stripe
1688D - The Enchanted Forest
1674C - Infinite Replacement
712A - Memory and Crow
1676C - Most Similar Words
1681A - Game with Cards
151C - Win or Freeze
1585A - Life of a Flower
1662A - Organizing SWERC
466C - Number of Ways
1146A - Love "A"
1618D - Array and Operations
1255A - Changing Volume
1710C - XOR Triangle
415C - Mashmokh and Numbers
8A - Train and Peter
591A - Wizards' Duel
1703G - Good Key Bad Key
1705A - Mark the Photographer
1707A - Doremy's IQ
1706B - Making Towers
1325B - CopyCopyCopyCopyCopy
1649C - Weird Sum
1324B - Yet Another Palindrome Problem
525A - Vitaliy and Pie
879A - Borya's Diagnosis
1672B - I love AAAB
1673A - Subtle Substring Subtraction
1345A - Puzzle Pieces